From 5dae05d826d18a05b269aa049d3443d0fa76a1fd Mon Sep 17 00:00:00 2001 From: "iap10@freefall.cl.cam.ac.uk" Date: Tue, 19 Apr 2005 15:16:46 +0000 Subject: [PATCH] bitkeeper revision 1.1323.1.1 (426520de5_4ELPPMz4K8LGEZrgN-Hg) Implement save/restore (not migration) for unstable. Signed-off-by: ian.pratt@cl.cam.ac.uk --- .../arch/xen/kernel/gnttab.c | 18 +++++++++++++++++- .../arch/xen/kernel/reboot.c | 6 ++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/linux-2.6.11-xen-sparse/arch/xen/kernel/gnttab.c b/linux-2.6.11-xen-sparse/arch/xen/kernel/gnttab.c index 715f5dc951..36b4951b15 100644 --- a/linux-2.6.11-xen-sparse/arch/xen/kernel/gnttab.c +++ b/linux-2.6.11-xen-sparse/arch/xen/kernel/gnttab.c @@ -319,7 +319,8 @@ static int grant_write(struct file *file, const char __user *buffer, return -ENOSYS; } -static int __init gnttab_init(void) + +int gnttab_resume(void) { gnttab_setup_table_t setup; unsigned long frames[NR_GRANT_FRAMES]; @@ -341,6 +342,21 @@ static int __init gnttab_init(void) for ( i = 0; i < NR_GRANT_ENTRIES; i++ ) gnttab_free_list[i] = i + 1; + + return 0; +} + +int gnttab_suspend(void) +{ + int i; + for ( i = 0; i < NR_GRANT_FRAMES; i++ ) + clear_fixmap(FIX_GNTTAB_END - i); + return 0; +} + +static int __init gnttab_init(void) +{ + BUG_ON(gnttab_resume()); /* * /proc/xen/grant : used by libxc to access grant tables diff --git a/linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c b/linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c index f544ce4e96..31b33671d5 100644 --- a/linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c +++ b/linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c @@ -84,6 +84,9 @@ static void __do_suspend(void) #define usbif_resume() do{}while(0) #endif + extern int gnttab_suspend(void); + extern int gnttab_resume(void); + extern void time_suspend(void); extern void time_resume(void); extern unsigned long max_pfn; @@ -107,6 +110,8 @@ static void __do_suspend(void) irq_suspend(); + gnttab_suspend(); + HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page; clear_fixmap(FIX_SHARED_INFO); @@ -138,6 +143,7 @@ static void __do_suspend(void) HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list = virt_to_machine(pfn_to_mfn_frame_list) >> PAGE_SHIFT; + gnttab_resume(); irq_resume(); -- 2.30.2